package com.nimitz.module.drip.service.impl;

import cn.hutool.core.date.DateUtil;
import com.nimitz.module.drip.service.IDriIncomeService;
import com.numa.open.sdk.java.dto.NumaReq;
import com.numa.open.sdk.java.dto.NumaResp;
import com.numa.open.sdk.java.dto.req.*;
import com.numa.open.sdk.java.service.NumaBizClient;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

/**
 * 收入上报 业务层实现
 */
@Service
public class DriIncomeServiceImpl implements IDriIncomeService {

    @Override
    public void testIncome() {
        // 本次请求收入 实体数量y: 渠道收入y ---单个mgu
        List<IncomeDataUnitReq> incomeDataUnitReqs1 = new ArrayList<>();
        IncomeDataUnitReq incomeDataUnitReq1 = new IncomeDataUnitReq();
        //微信渠道
        incomeDataUnitReq1.setIncomeAmount(new BigDecimal("1000.00"));
        incomeDataUnitReq1.setDimensionKey("wx");
        IncomeDataUnitReq incomeDataUnitReq2 = new IncomeDataUnitReq();
        //支付宝渠道
        incomeDataUnitReq2.setIncomeAmount(new BigDecimal("1500.00"));
        incomeDataUnitReq2.setDimensionKey("alipay_app");
        //现金渠道
        IncomeDataUnitReq incomeDataUnitReq3 = new IncomeDataUnitReq();
        incomeDataUnitReq3.setIncomeAmount(new BigDecimal("500.00"));
        incomeDataUnitReq3.setDimensionKey("cash");
        //银联渠道
        IncomeDataUnitReq incomeDataUnitReq4 = new IncomeDataUnitReq();
        incomeDataUnitReq4.setIncomeAmount(new BigDecimal("1200.00"));
        incomeDataUnitReq4.setDimensionKey("upacp");
        incomeDataUnitReqs1.add(incomeDataUnitReq1);
        incomeDataUnitReqs1.add(incomeDataUnitReq2);
        incomeDataUnitReqs1.add(incomeDataUnitReq3);
        incomeDataUnitReqs1.add(incomeDataUnitReq4);
        //本次请求不可分收入 实体数量x：渠道收入x ---单个mgu
        List<IndiIncomeUnitReq> indiIncomeUnitList1 = new ArrayList<IndiIncomeUnitReq>();
        //预付卡渠道
        IndiIncomeUnitReq indiIncomeUnitReq1 = new IndiIncomeUnitReq();
        indiIncomeUnitReq1.setIndivisibleType("prepaid_card_recharge");
        indiIncomeUnitReq1.setAmount(new BigDecimal("100.00"));
        indiIncomeUnitList1.add(indiIncomeUnitReq1);
        // 本次请求收入 实体数量y: 渠道收入y ---单个mgu
        List<IncomeDataUnitReq> incomeDataUnitReqs2 = new ArrayList<>();
        //微信渠道
        IncomeDataUnitReq incomeDataUnitReq5 = new IncomeDataUnitReq();
        incomeDataUnitReq5.setIncomeAmount(new BigDecimal("1000.00"));
        incomeDataUnitReq5.setDimensionKey("wx");
        //支付宝渠道
        IncomeDataUnitReq incomeDataUnitReq6 = new IncomeDataUnitReq();
        incomeDataUnitReq6.setIncomeAmount(new BigDecimal("2000.00"));
        incomeDataUnitReq6.setDimensionKey("alipay_app");
        //现金渠道
        IncomeDataUnitReq incomeDataUnitReq7 = new IncomeDataUnitReq();
        incomeDataUnitReq7.setIncomeAmount(new BigDecimal("900.00"));
        incomeDataUnitReq7.setDimensionKey("cash");
        //银联渠道
        IncomeDataUnitReq incomeDataUnitReq8 = new IncomeDataUnitReq();
        incomeDataUnitReq8.setIncomeAmount(new BigDecimal("1700.00"));
        incomeDataUnitReq8.setDimensionKey("upacp");
        incomeDataUnitReqs2.add(incomeDataUnitReq5);
        incomeDataUnitReqs2.add(incomeDataUnitReq6);
        incomeDataUnitReqs2.add(incomeDataUnitReq7);
        incomeDataUnitReqs2.add(incomeDataUnitReq8);
        //本次请求不可分收入 实体数量x：渠道收入x ---单个mgu
        List<IndiIncomeUnitReq> indiIncomeUnitList2 = new ArrayList<IndiIncomeUnitReq>();
        //预付卡渠道
        IndiIncomeUnitReq indiIncomeUnitReq2 = new IndiIncomeUnitReq();
        indiIncomeUnitReq2.setIndivisibleType("prepaid_card_recharge");
        indiIncomeUnitReq2.setAmount(new BigDecimal(300.00));
        indiIncomeUnitList2.add(indiIncomeUnitReq2);
        // 本次请求收入数据 实体数量n：mgu数量n ---包括不可分收入与可分收入list
        List<IncomeDataDetailReq> incomeList = new ArrayList<>();
        //单个mgu收入信息 ：可分收入+不可分收入（以下代码是"913100007294200001"）
        IncomeDataDetailReq incomeDataDetailReq1 = new IncomeDataDetailReq();
        incomeDataDetailReq1.setMguCreditCode("913100007294200001");
        incomeDataDetailReq1.setOrderDate("20211001");
        incomeDataDetailReq1.setIncomeUnitList(incomeDataUnitReqs1);
        incomeDataDetailReq1.setIndiIncomeUnitList(indiIncomeUnitList1);
        //单个mgu收入信息 ：可分收入+不可分收入（以下代码是"913100007294200002"）
        IncomeDataDetailReq incomeDataDetailReq2 = new IncomeDataDetailReq();
        incomeDataDetailReq2.setMguCreditCode("913100007294200002");
        incomeDataDetailReq2.setOrderDate("20211001");
        incomeDataDetailReq2.setIncomeUnitList(incomeDataUnitReqs2);
        incomeDataDetailReq2.setIndiIncomeUnitList(indiIncomeUnitList2);
        incomeList.add(incomeDataDetailReq1);
        incomeList.add(incomeDataDetailReq2);
        // 本次请求时间批次 实体数量1
        IncomeDataBatchReq incomeDataBatchReq = new IncomeDataBatchReq();
        incomeDataBatchReq.setBatchNo("20211001000001923100007294300001");
        incomeDataBatchReq.setBatchDatetime(DateUtil.parse("2021-10-01 00:00:00"));
        incomeDataBatchReq.setTotalCount(2L);
        incomeDataBatchReq.setDimensionType("PAY_CHANNEL");
        incomeDataBatchReq.setTotalAmount(new BigDecimal("9800.00"));
        incomeDataBatchReq.setIncomeList(incomeList);
        // 本次请求 实体数量1
        IncomeDataReq incomeDataReq = new IncomeDataReq();
        incomeDataReq.setCcaCreditCode("923100007294300001");
        incomeDataReq.setExtInfo("{\"info\":\"备注信息\"}");
        incomeDataReq.setBatchReq(incomeDataBatchReq);
        NumaResp<String> numaResp = NumaBizClient.invoke(new NumaReq<>(incomeDataReq));
        String result = numaResp.getData();
    }
}
